#include "importacao.h"
#include "construtorIndice.h"
#include "assert.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>


void testeConversaoLinha(){  
  RegAluno regArqImportacao = convertLinhaToRegistro("113603\tRICARDO JUNIOR DENARDI\tFARMACIA\t1043.7\n\r");
  assert(regArqImportacao.inscricao == 113603);
  assert(strcmp(regArqImportacao.nome,"RICARDO JUNIOR DENARDI") == 0);
  assert(strcmp(regArqImportacao.curso,"FARMACIA") == 0);
  assert(regArqImportacao.nota == 10437);  
  limpaRegistroArquivoImportacao(&regArqImportacao);
}


void testeLerArquivo(){
  char buffer[1000];
  
  FILE *file = fopen("dados.txt","r");
  
  assert(file);
  
  while(!feof(file)){
    fgets(buffer, sizeof(buffer), file);    
    RegAluno reg = convertLinhaToRegistro(buffer);
    printf("INSCRICAO-> %lld NOME-> %s CURSO-> %s NOTA-> %lld \n",reg.inscricao,reg.nome, reg.curso, reg.nota);    
    limpaRegistroArquivoImportacao(&reg);
  }
  
  fclose(file);
}

void testeConstruiIndice(){
  RegAluno regArqImportacao = convertLinhaToRegistro("113603\tRICARDO JUNIOR DENARDI\tFARMACIA\t1043.7\n\r");
  int tamanho = calculaTamRegistroBanco(regArqImportacao);
  assert(tamanho == 46);
}

void testeGravaRegistroBanco(){
  RegAluno regArqImportacao = convertLinhaToRegistro("113603\tRICARDO JUNIOR DENARDI\tFARMACIA\t1043.7\n\r");
  
  FILE *file = fopen("banco.txt","w+");  
  
  assert(file);
  
 // gravaRegistroArgBanco(regArqImportacao,file);
  fclose(file);
}

void testeGravaChavePrimaria(){
  ChavePrimaria chavePrimaria;
  chavePrimaria.inscricao = 113603;
  chavePrimaria.byteOffset = 42;
  
  FILE *file = fopen("indiceprimario.txt","w+");
  
  assert(file);
//  gravaChavePrimariaArgIndicePrimario(chavePrimaria,file);
  fclose(file);
}

void testeImportacao(){
    
  FILE *fileImportacao = fopen("dados.txt","r");
  
  ArquivosPersistencia arquivos;
  arquivos.fileBanco = fopen("banco.txt","w+");
  arquivos.fileIndicePrimario = fopen("indiceprimario.txt","w+");
  
  importar(fileImportacao,&arquivos);
  
  fclose(fileImportacao);
  fclose(arquivos.fileBanco);
  fclose(arquivos.fileIndicePrimario);  
}

int main(){
  
  //testeConversaoLinha();
  //testeLerArquivo();
  //testeConstruiIndice();
  //testeGravaRegistroBanco();
  //testeGravaChavePrimaria();
  testeImportacao();
  
  return 0;
}
